package com.heatup.apt.common.util;

import java.util.List;
import java.util.Map;

/**
 * 对分页的基本数据进行一个简单的封装
 * <P>File name : PageBean.java </P>
 * <P>Author : fangxiaowen </P> 
 * <P>Date : 2016年8月22日 </P>
 */
public class PageBean<T> {
	
	/**
	 * 页码，默认是第一页
	 */
	private int pageNo = 0;
	/**
	 * 每页显示的记录数，默认是10
	 */
    private int pageSize = 10;
    /**
     * 总记录数
     */
    private int total;
    /**
     * 总页数
     */
    private int totalPage;
    /**
     * 对应的当前页记录
     */
    private List<T> rows;
    /**
     * 其他的参数我们把它分装成一个Map对象
     */
    private T params ;
    /**
     * Page封装对象外的其他查询参数
     */
    private Map<String,Object> paramMap;
 
    public int getPageNo() {
       return pageNo;
    }
 
    public void setPageNo(int pageNo) {
       this.pageNo = pageNo;
    }
 
    public int getPageSize() {
       return pageSize;
    }
 
    public void setPageSize(int pageSize) {
       this.pageSize = pageSize;
    }
 
    public int getTotal() {
       return total;
    }
 
    public void setTotal(int total) {
       this.total = total;
       //在设置总页数的时候计算出对应的总页数，在下面的三目运算中加法拥有更高的优先级，所以最后可以不加括号。
       int totalPage = total%pageSize==0 ? total/pageSize : total/pageSize + 1;
       this.setTotalPage(totalPage);
    }
 
    public int getTotalPage() {
       return totalPage;
    }
 
    public void setTotalPage(int totalPage) {
       this.totalPage = totalPage;
    }
 
    public List<T> getRows() {
       return rows;
    }
 
    public void setRows(List<T> rows) {
       this.rows = rows;
    }
   
    public T getParams() {
       return params;
    }
   
    public void setParams(T params) {
       this.params = params;
    }
 
    @Override
    public String toString() {
       StringBuilder builder = new StringBuilder();
       builder.append("Page [pageNo=").append(pageNo).append(", pageSize=")
              .append(pageSize).append(", rows=").append(rows).append(
                     ", totalPage=").append(totalPage).append(
                     ", total=").append(total).append("]");
       return builder.toString();
    }

	public void setParamMap(Map<String,Object> paramMap) {
		this.paramMap = paramMap;
	}

	public Map<String,Object> getParamMap() {
		return paramMap;
	}

	public PageBean() {
		super();
	}

	public PageBean(int pageNo, int pageSize, T params) {
		super();
		this.pageNo = pageNo;
		this.pageSize = pageSize;
		this.params = params;
	}
 
}
